今天的主題是Scenario testing
,所謂的情節需要角色以及故事,通常是經過觀察使用者與產品之間的互動關係,從使用者角度出發來了解產品是如何被使用、又滿足了那些需求。由於是模擬真實的使用情況,所以Scenario testing
設計出來的測試流程相當貼近實際狀況,主要的困難點在觀察階段的收集與分析,再來就是功能的拆分了。
對應到今天的挑戰內容,我們將會實際設計多個請求,設定其執行順序來完整描述某個使用情境,過程將會用到很多前面章節討論的內容,包含API specification
、Collection runner
等等,算是一個總複習的篇章。那麼在開始之前,別忘了先把 Day 27: Scenario testing 複製到自己的工作區。
回到自己的工作區,打開今天的資料夾Scenario testing
,從右方的文件區可以了解到,今天會使用多個銀行的API來體驗一個帳號的創建、登入、登出的流程,操作步驟如下:
導入API:
利用前面章節講過的方法,將 https://raw.githubusercontent.com/kmmanoj96/vulnerable-apis/main/openAPISpecBank.yaml
內容載入到Postman並自動生成相關API
記得啟用Copy collections to workspace
,來將產生的API複製到工作區
新增子資料夾
在今天的資料夾Scenario testing
下面新增兩個資料夾
Setup
New user workflow
新增變數
在今天的Collection Day 27: Scenario testing
新增一個環境變數baseUrl
,值為http://security.postman-breakable.com
變數內容來自剛剛在工作區剛剛產生的
Good Bank API
這個collection裡的變數
新增請求
從剛剛產生的Good Bank API
collection裡找到 POST Create User
這個請求,複製到今天的資料夾Setup
之下,修改其body下的參數username
以及password
,嘗試發送來建立一個帳號,如果建立成功則會從回應裡取得user_id
的值,需要在今天Day 27的collection裡新增變數user_id
,填入剛剛創建得到的值。所以目前在Setup
資料夾下我們擁有一個可以建立帳號的API,也有一個user_id
環境變數了。
新增情境
在這個步驟我們要建立起幾個有先後順序的請求,來描述使用者的使用情境,都是先從Good Bank AP
找API,然後複製到今天建立的資料New user workflow
下,詳細的步驟如下
user
/User Login
複製而來{
"username": "testuser123",
"password": "testpass123"
}
user_id
以及 session_token
user_id
、token
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
let response = pm.response.json().response
let user_id = response.user_id
let token = response.session_token
//console.log(user_id, token);
pm.collectionVariables.set('user_id', user_id)
pm.collectionVariables.set('token', token)
});
New user workflow
的Authorization
進行設定
user
/Update User Information
複製而來Get User Information
GET
none
Authorization
調整成繼承200
從 account
/Account summary
複製而來
調整參數來指定user_id
新增測試,確認狀態碼是否為200
嘗試發送確認通過測試
user
/Logout
複製而來200
403
pm.test("Status code is 403", function () {
pm.response.to.have.status(403);
});
批次執行
新增完請求後,今天的Collection會長得像這樣
然後在資料夾New use workflow
旁邊三個小點的選項找到Run folder
來批次執行下面所有的請求,將會依序執行資料夾內所有請求,結果如下
submit
到這邊就可以進行submit了,如果有測試錯誤的話,可以檢查每個請求是不是都有新增測試,另外就是Authorization
都調整成繼承模式,來統一使用設定在資料夾New use workflow
內的api key。
今天我們實際新增了好幾個請求來模擬使用者實際的一個使用情境,除了新增使用者的API之外,其他的請求有著順序的相依性,大多數的API都需要先進行登入才能繼續,而另外登出後的行為也相當重要,因此今天的體驗裡我們也透過重複定義的請求,去看它在登入前以及登入後是否都如同我們預期的工作一樣。
以往的Tests
只能確保單一API是否正常工作,而情節測試更貼近於使用者的真實情況,畢竟有些功能必須透過多個API互相搭配才能夠完成,而Postman提供的機制也能很好的處理這樣的需求。
那麼今天就到這裡,我們明天見~